# Старая добрая сортировка обменом. Ввести натуральное число N — количество строк, а затем — N строк. Вывести их в лексикографическом порядке возрастания. Длина строк меньше 100.

.include "string.inc"    	# В Д/З сюда надо вставить string.inc и string.asm
.include "string.asm"

.globl	main

.data
buf:	.space  STRSIZE		# 101
	.align  2                    
array:

.text
main:   syscall 5
	mv	s5 a0
	mv	s6 s5
	la	s3 array
loop:   beqz    s6 loop_sort
	addi	s6 s6 -1
	strget  s1 s2           # jal _strget; a0→s1 (aдрес), a2→s2 (длина)
	sw	s1 (s3)
	addi	s3 s3 4
	b       loop
	
loop_sort:
	la	s3 array
	mv	s6 s5
	mv	s4 zero
	loop_step:
		addi	s6 s6 -1
		beqz    s6 done_step
		lw	s1 (s3)
		lw	s2 4(s3)
		strcmp  s1 s2 t0
        	bltz    t0 lt_step
        	addi	s4 s4 1
        	sw	s1 4(s3)
        	sw	s2 (s3)
        	lt_step:
        	addi	s3 s3 4
        	b	loop_step
        done_step:		
	beqz	s4 done_sort
	b       loop_sort
	
done_sort:
	li	a0 '\n'
	syscall	11 a0
	la	s3 array
	mv	s6 s5
loop_print:
	beqz    s6 done_print
	addi	s6 s6 -1
	lw	t1 (s3)
	print	t1
	addi	s3 s3 4
	b       loop_print
done_print:     syscall 10
